package com.wentao.thisService.service;

import com.wentao.thisFacade.common.UserInfo;
import com.wentao.thisFacade.domain.reqeust.ForgetPasswordRequest;
import com.wentao.thisFacade.domain.reqeust.MobileAndCodeRequest;
import com.wentao.thisFacade.domain.reqeust.MobileCodeRequest;

/**
 * @Auther: ZhaiYanTao
 * @Date: 2020/3/27 10:15
 * @Description: 验证，授权 service
 */
public interface AuthenticationService {

    /**
     * 账号密码登录
     *
     * @param entity 手机号+密码
     * @return 登录结果
     */
    UserInfo login(String userName, String password, String loginSystem) throws Exception;

    /**
     * 手机号获取验证码
     *
     * @param entity 手机号码+验证码类型
     * @return 获取验证码结果
     * @throws Exception 异常信息
     */
    Boolean mobileCodeGain(MobileCodeRequest mobileCodeRequest) throws Exception;

    /**
     * 手机号+验证码登录
     *
     * @param entity 手机号码+验证码
     * @return 登录结果
     * @throws Exception 异常信息
     */
    UserInfo mobileAndCodeLogin(MobileAndCodeRequest mobileAndCodeRequest) throws Exception;

    /**
     * 根据userId和token登录
     *
     * @param entity userId和token
     * @return 登录结果
     * @throws Exception 异常信息
     */
    UserInfo loginByUserNameAndToken(String userName, String token) throws Exception;

    /**
     * 修改密码--通过验证码修改
     *
     * @param entity 手机号+验证码+新密码
     * @return 操作结果
     * @throws Exception 异常信息
     */
    Boolean changePassword(ForgetPasswordRequest forgetPasswordRequest) throws Exception;

    /**
     * 退出登录
     *
     * @param userName 用户名=注册手机号
     * @return 退出结果
     */
    Boolean loginOut(String userName) throws Exception;

    /**
     * 根据useId检查登录状态
     *
     * @param userId 用户id
     * @return 检查结果
     * @throws Exception 异常信息
     */
    boolean checkLogin(Long userId, String token) throws Exception;

    /**
     * 验证码校验
     *
     * @param mobile 手机号
     * @param code   验证码
     * @return true校验成功，false校验失败
     */
    boolean mobileVerificationCodeCheck(String mobile, String code);
}
